# 遇到字符串要引号
##
# 666
# 13.14
# "abc"
#
# print(666)
# print(13.14)
# print("aaa")

# a=10   # 初始化
# print(a)
# a=20    #
# b=1.2
# print(type(a))    # 可以查看a的类型
# print(type(b))

# a="aaa"
# b="lll"
# print(a+b)

# a=10
# print(type(a))
#
# a="ff"
# print(type(a))

# a = 10
# print(f"a={a}")
#
# num1 = input("请输入：")
# num2 = input("请输入：")
# print(f"num1+num2：{num1+num2}")  # 直接执行 则只是字符串拼接
#
# # 进行类型转换
# num1=int(num1)
# num2=int(num2)
#
# print(f"num1+num2：{num1+num2}")  # 计算 num1+num2的值


# print(1/2)  # 0.5
#
# print(7//2)
# print(7/2)

# print(0.1+0.2)  # 不是得到0.3 而是得到0.3000000000000004

# a = 0.1+0.2
# b = 0.3
# print(-0.00001 < (a-b) < 0.000001)

# a, b = 10, 20
# print(a, b)

# a = 1
# b = 0.1
# print(f"a+b={a+b}")


# a = input("输入：")
# if a == "1":
#     print("hao")
# elif a == "2":
#     print("nice")
# else:
#     print("no")

# b=2;
# if a=='1':
#     if b=='2':
#         print("yes")
#     print("no")
# print("abc")
#
# a =input("输入：")
# a=int(a)

# a = input("qingshu:")
# if a=='1':
#     pass
# else:
#     print('aa')

# # 1~100的和
# theSum =0
# for i in range(1,101):
#     theSum+=i
# print(theSum)
#
# # 300~400的和
# theSum =0
# for i in range(300,401):
#     theSum +=i
# print(theSum)


# # 定义一个求和函数
# def calcSum(beg, end):
#     theSum = 0
#     for i in range(beg, end+1):
#         theSum += i
#     print(theSum)
#
#
#
# #调用函数
# calcSum(1, 100)
# calcSum(300, 400)

# def test():
#     print("111")
#     print("222")
#
#
# test()
# test()


# def test(a):
#     print(a)
#
#
# test(12)
# test("aaa")
# test(True)


# def getPoint():
#     x = 10
#     y = 20
#     return x, y
#
#
# _, b = getPoint()  # 只把y赋值给b
# print(b)
# a, b = getPoint()  # x,y赋值给a，b
# print(a,b)


# def test():
#     print("执行代码")
#     print("执行代码")
#     print("执行代码")
#     print("执行代码")
#
#
#
# print("1111")
# test()
# print("2222")
# test()
# print("3333")
# test()
# print("4444")
# test()


# def add(x, y):
#     return x+y
#
# print(add(1,2))


# def a():
#     print("a")
#
#
# def b():
#     print("b")
#     a()
#
#
# b()

# def factor(n):
#     if n == 1:
#         return 1
#     return n * factor(n - 1)
#
#
# print(factor(5))

#
# # 给函数定义一个debug 设置默认值为false
# # # 如果传入的值为True，则打印（辅助调试） 如果不传入，则默认为false
# def add(x,y,debug=False):    #debug只能在后面 非默认参数要放前面，有默认参数放后面
#     if debug:
#         print(f"x={x},y={y}")
#     return x+y

# result = add(10,20,)
# print(result)


# add(x=10,y=20,debug=True)  # 明确表示 值传给哪个参数
# 创建列表  1
# a = []
# print(type(a))
# # 创建列表  2
# b = list()
# print(type(b))
#
# # 可以创建列表时，指定初始值
# a= [1,2,"qqq",True]
# print(a)
#
# a= [1,2,"qqq",True]
# print(a[2])  # 这个是指下标2 从0开始计数

# a=[1,2,3,4]
# a[2]=100
# print(a)

# a= [1,2,"qqq",True]
# print(a[len(a)-1])
# print(a[-1])

# a=[1,2,3,4]
# print(a[1:])
# print(a[:2])
# print(a[:])
# print(a[::2])


# a=[1,2,3,4,5,6,7]
# # 遍历列表 ---for循环
# for elem in a:     # elem代表列表里的每个元素
#     print(elem)
# 遍历列表 ---for,通过下标方式
# for i in range(0,len(a)):
#     print(a[i])

# 遍历列表 ---while循环，通过下标遍历
# i=0
# while i<len(a):
#     print(a[i])
#     i+=1

# a = [1, 2, 3, 4, 5, 5, 'bbb']
# # 使用append 往列表末尾新增一个元素
# # 使用insert方法往列表的任意位置来新增元素
# a.insert(1,"hhh")
# print(a)
#
# # 使用 in 来判定某个元素是否在某个列表存在
# a=[1,2,3,4]
# print(1 in a)
# print(20 in a)
# print(10 not in a)

# # 使用 index 方法来判定，当前元素在列表中的位置 得到一个元素的下标
# a=[1,2,3,4]
# print(a.index(2))

# a=[1,2,3,4]
# # 使用pop 删除列表的最末尾的元素
# a.pop()
# print(a)
# # 使用 pop 也可以删除任意元素位置，pop传下标过去
# a.pop(1)
# print(a)

# # 使用remove方法，可以按照值来删除
# a=['aa','bb','cc']
# a.remove('bb')
# print(a)


# # 使用 + 针对两个列表进行拼接
# a=[1,2,3,4]
# b=[5,6,7,8]
# c=a+b
# print(c)

# # 使用extend来进行拼接
# # 这个拼接是把后一个列表的内容拼接大奥一个新的列表里面
# a=[1,2,3,4]
# b=[5,6,7,8]
# a.extend(b)
# print(a)
# print(b)

# # 使用+=来进行拼接
# a=[1,2,3,4]
# b=[5,6,7,8]
# a+=b
# print(a)
# print(b)


# 创建元组
# a=()
# print(type(a))
# b=tuple()
# print(type(b))
# # 指定初始值
# a=(1,2,3,4)
# print(a)
#
# # 通过元组下标来访问元素，从0开始到len-1结束 （和数组一样）
# a=(1,2,3,4)
# print(a[1])

# # 当进行多元赋值时，其实本质上是按照元组的方式来进行工作
# def getPoint():
#     x=10
#     y=20
#     return x,y
#
# x,y=getPoint()
# print(type(getPoint()))

#
# # 创建字典
# a={'id':1,'name':'lisan'}     # 方法1
# print(type(a))
# print(a)
# b=dict()     #2
# print(type(b))


# 使用 in 来判定某个key 是否在字典中存在
# a={
#     'id':1,
#     'name':'zhangsan',
#     100:'list'
# }
# # print('id' in a)
# print('zhangsan' not in a)    # in 只判断key 不判断value
# print('classId' in a)

# 使用 [] 来根据key获取到value
# print(a['id'])
# print(a['name'])
# print(a[100])

# 字典中新增元素 使用[]进行
# a['score']=90
# print(a)
#
# # 在字典中根据key修改value  也是使用[] 进行的
# a['score']=100
# print(a)
#
# # 使用pop方法，根据key 来删除键值对
# a.pop('name')
# print(a)


# a={
#     'id':1,
#     'name':'zhangsan',
#     'score':90
# }
# # 字典中的遍历
# for key in a:
#     print(key, a[key])

# print(a.keys())    # 返回的结果是一个自定义的类型--dict_keys
# print(a.values())
# print(a.items())


# 使用hash  哈希函数能够计算出一个变量的哈希值
# print(hash(0))
# print(hash(3.14))
# print(hash("a"))
# print(hash(True))
# print(hash((1,2,3)))


# 打开文件   open
# f = open('d:/leidian/test.txt', 'r')    # r  -->read    w  ->write
# print(f)
# print(type(f))
# 读文件  read
# f = open('d:/leidian/test.txt', 'r', encoding='utf8')
# # # result = f.read(5)   #这是读几个字
# # for line in f:
# #     print(f'line={line}', end='')
# # 使用readlines方法 把整个文件所有内容读取出来，按照行组织到一个列表里
# lines = f.readlines()
# print(lines)
#
# f.close()

# # 写文件   write
# f.write('hello')
# 直接写打开，会把文件原有内容清空

# 关闭文件  close
# f.close()


# def func():
#     f = open('d:/leidian/test.txt','r',encoding='utf8')
#     # 中间来写其他操作文件的逻辑
#     # 万一中间的代码 有条件判断，函数返回，抛出异常
#     if cond:
#         # 条件处理
#         return
#     #另外代码
#     f.close()

# 使用上下文管理器来解决问题
# 当with对应的代码块执行结束，会自动执行f的close
# def func():
#     with open('d:/leidian/test.txt','r',encoding='utf8') as f:
#         # 进行文件处理的逻辑
#         # 假设有很多代码（里面存在 条件判断 里面有return）
#
#


